import pandas as pd
from flask import jsonify


# ResultFulApi-成功响应。
def success_response(data=None, message="操作成功", code=200):
    """成功响应"""
    response = {
        "code": code,  # 业务成功码（自定义）
        "message": message,
        "data": data
    }
    return jsonify(response)


def error_response(message="操作失败", code=400, business_code=1):
    """错误响应"""
    response = {
        "code": code,
        "message": message,
        "data": None
    }
    return jsonify(response)


# 去除字符串中的字母，留下字符。
def remove_letters(s):
    # 使用列表推导式筛选非字母字符
    result = [char for char in s if not char.isalpha()]
    # 拼接成新字符串并返回
    return ''.join(result)


# 处理目标表的日期，拼接为年-月的格式。
def format_date(df: pd.DataFrame):
    """
    将分开的年月，拼接为年-月的格式。
    :param df:目标表源dataframe
    :return:拼接日期之后的dataframe
    """
    df['date'] = df['goal_date_year'].astype(str) + '-' + df['goal_date_month'].astype(str)
    df['date'] = pd.to_datetime(df['date'])
    return df


def return_response_(status, res,message='None'):
    if status:
        return success_response(data=res, message=res)
    else:
        return error_response(message=message)


# -------------------------- 可选：自定义请求校验工具 --------------------------
class CommonUtils:
    @staticmethod
    def validate_request(data, required_fields):
        """
        校验请求体必填字段
        :param data: 请求体JSON字典
        :param required_fields: 必填字段列表
        :return: (bool, str) 校验结果，错误信息
        """
        for field in required_fields:
            if field not in data or not data[field]:
                return False, f"缺少必填字段：{field}"
        return True, "校验通过"
